Imports System.Data.SqlClient
Imports System.ComponentModel

Public Class cls_articulocomposicionmaquinariatarea_

    Implements ICloneable

#Region "Variables ..."
    Private int_idarticulocomposicionmaquinariatarea As Integer = 0
    Private int_idarticuloprimario As Integer = 0
    Private int_idmaquinariatarea As Integer = 0
    Private dbl_cantidad As Double = 0
    Private bit_segunproduccion As Boolean = False
    Private int_tiposegunproduccion As enu_segunproduccion
    Private dec_valor As Decimal
    Private int_tiposegunvalor As enu_segunvalor
    Private int_idmaquinaria As Integer


    Private obj_maquinariatarea As cls_maquinariatarea_
    Private obj_articuloprimario As cls_articulo_
    Private obj_maquinaria As cls_maquinaria_

    Public Enum enu_segunproduccion
        <Description("0  - Valor fijo.")> fijo = 0
        <Description("6  - Segun la produccion de menor valor.")> produccionMenor = 6
        <Description("7  - Segun el promedio de todas las producciones.")> produccionPromedio = 7
        <Description("8  - Segun la produccion de mayor valor.")> produccionMayor = 8
        <Description("9  - Segun la ultima produccion.")> produccionUltimo = 9
    End Enum

    Public Enum enu_segunvalor
        <Description("0  - Valor fijo.")> fijo = 0
        <Description("1  - Segun la maquinaria seleccionado.")> proveedor = 1
        <Description("2  - Segun la maquinaria de menor valor.")> proveedorMenor = 2
        <Description("3  - Segun el promedio de todos las maquinarias.")> proveedorPromedio = 3
        <Description("4  - Segun la maquinaria de mayor valor.")> proveedorMayor = 4
        <Description("5  - Segun el valor unitario del proceso de maquinaria.")> proveedorUltimo = 5
        <Description("6  - Segun la produccion de menor valor.")> produccionMenor = 6
        <Description("7  - Segun el promedio de todas las producciones.")> produccionPromedio = 7
        <Description("8  - Segun la produccion de mayor valor.")> produccionMayor = 8
        <Description("9  - Segun la ultima produccion.")> produccionUltimo = 9
    End Enum

    Private col_Items As Collections.Generic.List(Of cls_articulocomposicionmaquinariatarea_) = Nothing
#End Region

#Region "Propiedades ..."
    ReadOnly Property This
        Get
            Return Me
        End Get
    End Property
    ReadOnly Property ThisDescripcion As String
        Get
            Return Me.ToString
        End Get
    End Property
    ReadOnly Property pKey
        Get
            Return idarticulocomposicionmaquinariatarea
        End Get
    End Property
    Property idarticulocomposicionmaquinariatarea() As Integer
        Get
            idarticulocomposicionmaquinariatarea = int_idarticulocomposicionmaquinariatarea
        End Get
        Set(ByVal value As Integer)
            int_idarticulocomposicionmaquinariatarea = value
        End Set
    End Property
    Property idarticuloprimario() As Integer
        Get
            idarticuloprimario = int_idarticuloprimario
        End Get
        Set(ByVal value As Integer)
            int_idarticuloprimario = value
        End Set
    End Property
    Property idmaquinariatarea() As Integer
        Get
            idmaquinariatarea = int_idmaquinariatarea
        End Get
        Set(ByVal value As Integer)
            int_idmaquinariatarea = value
        End Set
    End Property
    Public Function cantidad(ByVal prm_valor As Decimal) As Decimal
        dbl_cantidad = prm_valor
        Return prm_valor
    End Function
    Public Function cantidad() As Decimal
        Select Case tiposegunproduccion
            Case enu_segunproduccion.fijo
                Return dbl_cantidad
            Case Else
                Return CantidadXidarticuloprimario(idarticuloprimario, idmaquinariatarea, tiposegunproduccion)
        End Select
    End Function
    Public Function cantidad(ByVal prm_segunproduccion As enu_segunproduccion) As Decimal
        Select Case tiposegunproduccion
            Case enu_segunproduccion.fijo
                Return dbl_cantidad
            Case Else
                Return CantidadXidarticuloprimario(idarticuloprimario, idmaquinariatarea, prm_segunproduccion)
        End Select
    End Function

    Property segunproduccion() As Boolean
        Get
            segunproduccion = bit_segunproduccion
        End Get
        Set(ByVal value As Boolean)
            bit_segunproduccion = value
        End Set
    End Property

    Property tiposegunproduccion As enu_segunproduccion
        Get
            tiposegunproduccion = int_tiposegunproduccion
        End Get
        Set(ByVal value As enu_segunproduccion)
            int_tiposegunproduccion = value
        End Set
    End Property

    Public Function valor(ByVal prm_valor As Decimal) As Decimal
        dec_valor = prm_valor
    End Function
    Public Function valor() As Decimal
        Select Case tiposegunvalor
            Case enu_segunproduccion.fijo
                Return dec_valor
            Case Else
                Return ValorXidarticuloprimario(idarticuloprimario, idmaquinariatarea, tiposegunvalor, idmaquinaria)
        End Select
    End Function
    Public Function valor(ByVal prm_segunvalor As enu_segunvalor, ByVal prm_idmaquinaria As Integer) As Decimal

        Select Case prm_segunvalor
            Case enu_segunproduccion.fijo
                Return dec_valor
            Case Else
                Return ValorXidarticuloprimario(idarticuloprimario, idmaquinariatarea, prm_segunvalor, prm_idmaquinaria)
        End Select
    End Function

    Public Function valorMantenimiento(ByVal prm_valor As Decimal) As Decimal
        dec_valor = 0
    End Function
    Public Function valorMantenimiento() As Decimal
        Select Case tiposegunvalor
            Case enu_segunproduccion.fijo
                Return 0
            Case Else
                Return ValorMantenimientoXidarticuloprimario(idarticuloprimario, idmaquinariatarea, tiposegunvalor, idmaquinaria)
        End Select
    End Function
    Public Function valorMantenimiento(ByVal prm_segunvalor As enu_segunvalor, ByVal prm_idmaquinaria As Integer) As Decimal

        Select Case prm_segunvalor
            Case enu_segunproduccion.fijo
                Return 0
            Case Else
                Return ValorMantenimientoXidarticuloprimario(idarticuloprimario, idmaquinariatarea, prm_segunvalor, prm_idmaquinaria)
        End Select
    End Function

    Property maquinariatarea() As cls_maquinariatarea_
        Get
            If IsNothing(obj_maquinariatarea) Then
                obj_maquinariatarea = New cls_maquinariatarea_
                If Not obj_maquinariatarea.Buscar(idmaquinariatarea) Then
                    obj_maquinariatarea = Nothing
                End If
            End If
            maquinariatarea = obj_maquinariatarea
        End Get
        Set(ByVal value As cls_maquinariatarea_)
            obj_maquinariatarea = value
        End Set
    End Property
    Property maquinaria() As cls_maquinaria_
        Get
            If IsNothing(obj_maquinaria) Then
                obj_maquinaria = New cls_maquinaria_
                If Not obj_maquinaria.Buscar(idmaquinaria) Then
                    obj_maquinaria = Nothing
                End If
            End If
            maquinaria = obj_maquinaria
        End Get
        Set(ByVal value As cls_maquinaria_)
            obj_maquinaria = value
        End Set
    End Property
    Property articuloprimario() As cls_articulo_
        Get
            If IsNothing(obj_articuloprimario) Then
                obj_articuloprimario = New cls_articulo_
                If Not obj_articuloprimario.Buscar(idarticuloprimario) Then
                    obj_articuloprimario = Nothing
                End If
            End If
            articuloprimario = obj_articuloprimario
        End Get
        Set(ByVal value As cls_articulo_)
            obj_articuloprimario = value
        End Set
    End Property
    Property tiposegunvalor As enu_segunvalor
        Get
            tiposegunvalor = int_tiposegunvalor
        End Get
        Set(ByVal value As enu_segunvalor)
            int_tiposegunvalor = value
        End Set
    End Property
    Property idmaquinaria As Integer
        Get
            idmaquinaria = int_idmaquinaria
        End Get
        Set(ByVal value As Integer)
            int_idmaquinaria = value
        End Set
    End Property

    Property Items() As Collections.Generic.List(Of cls_articulocomposicionmaquinariatarea_)
        Get
            Items = col_Items
        End Get
        Set(ByVal value As Collections.Generic.List(Of cls_articulocomposicionmaquinariatarea_))
            col_Items = value
        End Set
    End Property
#End Region

    Public Overrides Function ToString() As String
        Return maquinariatarea.ToString
    End Function

    Private Sub CargarColeccion(ByVal obj_Reader As SqlDataReader)
        col_Items = New Collections.Generic.List(Of cls_articulocomposicionmaquinariatarea_)
        While obj_Reader.Read()
            Dim Elemento As New cls_articulocomposicionmaquinariatarea_
            Elemento.int_idarticulocomposicionmaquinariatarea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticulocomposicionmaquinariatarea")))

            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticuloprimario"))) = False Then
                Elemento.int_idarticuloprimario = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticuloprimario")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinariatarea"))) = False Then
                Elemento.int_idmaquinariatarea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinariatarea")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad"))) = False Then
                Elemento.dbl_cantidad = (obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("segunproduccion"))) = False Then
                Elemento.bit_segunproduccion = (obj_Reader.GetValue(obj_Reader.GetOrdinal("segunproduccion")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunproduccion"))) = False Then
                Elemento.int_tiposegunproduccion = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunproduccion")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("valor"))) = False Then
                Elemento.dec_valor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunvalor"))) = False Then
                Elemento.int_tiposegunvalor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunvalor")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinaria"))) = False Then
                Elemento.int_idmaquinaria = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinaria")))
            End If
            col_Items.Add(Elemento)
        End While
    End Sub

    Private Sub CargarVariables(ByVal obj_Reader As SqlDataReader)
        obj_Reader.Read()
        int_idarticulocomposicionmaquinariatarea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticulocomposicionmaquinariatarea")))

        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticuloprimario"))) = False Then
            int_idarticuloprimario = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idarticuloprimario")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinariatarea"))) = False Then
            int_idmaquinariatarea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinariatarea")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad"))) = False Then
            dbl_cantidad = (obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("segunproduccion"))) = False Then
            bit_segunproduccion = (obj_Reader.GetValue(obj_Reader.GetOrdinal("segunproduccion")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunproduccion"))) = False Then
            int_tiposegunproduccion = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunproduccion")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("valor"))) = False Then
            dec_valor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunvalor"))) = False Then
            int_tiposegunvalor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiposegunvalor")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinaria"))) = False Then
            int_idmaquinaria = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmaquinaria")))
        End If
    End Sub

    Public Function Nuevo(Optional ByVal ObtenerID As Boolean = False) As Boolean
        Nuevo = False
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__Nuevo"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = int_idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = int_idmaquinariatarea
                .Parameters.Add("@cantidad", SqlDbType.Decimal).Value = dbl_cantidad
                .Parameters.Add("@segunproduccion", SqlDbType.Bit).Value = bit_segunproduccion
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = int_tiposegunproduccion
                .Parameters.Add("@valor", SqlDbType.Decimal).Value = dec_valor
                .Parameters.Add("@tiposegunvalor", SqlDbType.Int).Value = int_tiposegunvalor
                .Parameters.Add("@idmaquinaria", SqlDbType.Int).Value = int_idmaquinaria
                .ExecuteNonQuery()
            End With
            Nuevo = True
            If ObtenerID Then
                CargarUltimo()
            End If
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al Crear el registro de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Function

    Public Sub Modificar()
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__Modificar"
                .Parameters.Add("@idarticulocomposicionmaquinariatarea", SqlDbType.Int).Value = int_idarticulocomposicionmaquinariatarea
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = int_idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = int_idmaquinariatarea
                .Parameters.Add("@cantidad", SqlDbType.Decimal).Value = dbl_cantidad
                .Parameters.Add("@segunproduccion", SqlDbType.Bit).Value = bit_segunproduccion
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = int_tiposegunproduccion
                .Parameters.Add("@valor", SqlDbType.Decimal).Value = dec_valor
                .Parameters.Add("@tiposegunvalor", SqlDbType.Int).Value = int_tiposegunvalor
                .Parameters.Add("@idmaquinaria", SqlDbType.Int).Value = int_idmaquinaria
                .ExecuteNonQuery()
            End With
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al Modificar el registro de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Eliminar(ByVal idarticulocomposicionmaquinariatarea As Integer)
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__Eliminar"
                .Parameters.Add("@idarticulocomposicionmaquinariatarea", SqlDbType.Int).Value = idarticulocomposicionmaquinariatarea
                .ExecuteNonQuery()
            End With
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al Eliminar el registro de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Function Buscar(ByVal idarticulocomposicionmaquinariatarea As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            Buscar = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__Buscar"
                .Parameters.Add("@idarticulocomposicionmaquinariatarea", SqlDbType.Int).Value = idarticulocomposicionmaquinariatarea
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                Buscar = True
            End If
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al Buscar el registro de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Sub CargarUltimo()
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__CargarUltimo"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
            End If
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al CargarUltimo registro de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Sub

    Public Function CargarTodos() As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarTodos = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__CargarTodos"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarTodos = True
            End If
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al CargarTodos los registros de articulocomposicionmaquinariatarea_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function Clone() As Object Implements System.ICloneable.Clone
        Dim obj_articulocomposicionmaquinariatarea_Clon As New cls_articulocomposicionmaquinariatarea_
        obj_articulocomposicionmaquinariatarea_Clon.int_idarticulocomposicionmaquinariatarea = Me.int_idarticulocomposicionmaquinariatarea
        obj_articulocomposicionmaquinariatarea_Clon.int_idarticuloprimario = Me.int_idarticuloprimario
        obj_articulocomposicionmaquinariatarea_Clon.int_idmaquinariatarea = Me.int_idmaquinariatarea
        obj_articulocomposicionmaquinariatarea_Clon.dbl_cantidad = Me.dbl_cantidad
        obj_articulocomposicionmaquinariatarea_Clon.bit_segunproduccion = Me.bit_segunproduccion
        obj_articulocomposicionmaquinariatarea_Clon.int_tiposegunproduccion = Me.int_tiposegunproduccion
        obj_articulocomposicionmaquinariatarea_Clon.dec_valor = Me.dec_valor
        obj_articulocomposicionmaquinariatarea_Clon.int_idmaquinaria = Me.int_idmaquinaria
        obj_articulocomposicionmaquinariatarea_Clon.int_tiposegunvalor = Me.int_tiposegunvalor
        obj_articulocomposicionmaquinariatarea_Clon.col_Items = Me.col_Items
        Return obj_articulocomposicionmaquinariatarea_Clon
    End Function

    Function CargarXidarticuloprimario(ByVal int_idarticuloprimario As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarXidarticuloprimario = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__CargarXidarticuloprimario"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = int_idarticuloprimario
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarXidarticuloprimario = True
            End If
        Catch ex As SqlClient.SqlException
            Throw New Exception("Error al CargarTodos los registros de articulocomposicionarticulo_." & Chr(13) & _
           "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
           "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
           "Descripción: " & ex.Message)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Private Function CantidadXidarticuloprimario(ByVal prm_idarticuloprimario As Integer, ByVal prm_idmaquinariatarea As Integer, ByVal prm_segunproduccion As enu_segunproduccion) As Decimal
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__Cantidad"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = prm_idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = prm_idmaquinariatarea
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = prm_segunproduccion
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad"))) = False Then
                    CantidadXidarticuloprimario = (obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad")))
                End If
            End If
        Catch ex As SqlClient.SqlException
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Private Function ValorXidarticuloprimario(ByVal prm_idarticuloprimario As Integer, ByVal prm_idmaquinariatarea As Integer, ByVal prm_segunproduccion As enu_segunproduccion, ByVal prm_idmaquinaria As Integer) As Decimal
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__valor"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = idmaquinariatarea
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = prm_segunproduccion
                .Parameters.Add("@idmaquinaria", SqlDbType.Int).Value = prm_idmaquinaria
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("valor"))) = False Then
                    ValorXidarticuloprimario = (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
                End If
            End If
        Catch ex As SqlClient.SqlException
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Private Function ValorMantenimientoXidarticuloprimario(ByVal prm_idarticuloprimario As Integer, ByVal prm_idmaquinariatarea As Integer, ByVal prm_segunproduccion As enu_segunproduccion, ByVal prm_idmaquinaria As Integer) As Decimal
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__valorMantenimiento"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = idmaquinariatarea
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = prm_segunproduccion
                .Parameters.Add("@idmaquinaria", SqlDbType.Int).Value = prm_idmaquinaria
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("valor"))) = False Then
                    ValorMantenimientoXidarticuloprimario = (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
                End If
            End If
        Catch ex As SqlClient.SqlException
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Function ProduccionXCantidadXidmaquinariatarea() As Integer
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "articulocomposicionmaquinariatarea__ProduccionXCantidad"
                .Parameters.Add("@idarticuloprimario", SqlDbType.Int).Value = idarticuloprimario
                .Parameters.Add("@idmaquinariatarea", SqlDbType.Int).Value = idmaquinariatarea
                .Parameters.Add("@tiposegunproduccion", SqlDbType.Int).Value = tiposegunproduccion
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("cantidad"))) = False Then
                    ProduccionXCantidadXidmaquinariatarea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idproduccion")))
                End If
            End If
        Catch ex As SqlClient.SqlException
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try

    End Function

End Class
